# Hello Python
print("Hello Python!")
print('----------------------')
# 注释样式：
# 1：#开头 2：''' ''' 3:""" """
# 1

'''
2
'''

"""
3
"""

# 行与缩进 可以用缩进表示代码块 不相同的缩进空格数会报错
if True:
    print("True")
else:
    print("False")
'''
下面这种会报错
if True:
    print("Answer")
    print("True")
else:
    print("Answer")
 print("False")
'''
print('----------------------')
# 多行语句，如果一条语句过长，可以使用"\"来事项多行语句
item_one = 1
item_three = 3
total = item_one + \
        item_one + \
        item_three
print(total)
# 在{}，[]，()，中的多行语句不需要“\”
strArray = ['item_one',
            'item_two',
            'item_three']
print(len(strArray))
print('----------------------')
# 数字（Number）类型
# python中数字有四种类型：整数，布尔型，浮点数和复数
'''
int 整数，如1，只有一种整数类型int，表示长整型，没有long
bool 布尔，如True
float 浮点数，如1.23,3E-2
complex 复数，如1+2j,1.1+2.2j
'''

# 字符串
'''
python中单引号和双引号使用完全相同
使用三引号(''' '''或""")可以指定一个多行字符串
转义符“\”
反斜杠可以用来转义，使用r可以让反斜杠不发生转义，如r"this is a line with \n" 则\n会显示，并不会换行
按字面意义级联字符串，如“this” “is” “string”会被自动转换成 this is string
字符串可以用+运算符连接在一起，用*运算符重复
python中的字符串有两种索引方式，从左到右从0开始，从右到左以-1开始
python中的字符串不可以改变
python没有单独的字符类型，一个字符就是长度为1的字符串
字符串的截取的语法格式如下：变量[头下标:尾下标:步长]
'''
word = "字符串"
sentence = "这是一个句子"
paragraph = """这是一个段落，
可以由多行组成。
"""
print(word)
print(sentence)
print(paragraph)

# 字符串实例
str = 'Runoob'
print(str)          # 输出字符串
print(str[0:-1])    # 输出第一个到倒数第二个的所有字符
print(str[0])       # 输出字符串的第一个字符
print(str[2:5])     # 输出从第三个开始到第五个字符
print(str[2:])      # 输出从第三个开始所有的字符
print(str[1:5:2])   # 输出从第二个开始到第五个且每隔两个的字符
print(str * 2)      # 输出字符串两次
print(str + '您好')  # 拼接字符串
print('hello\nrunoob')      # 使用反斜杠（\）+n转义特殊字符
print(r'hello\nrunoob')     # 在字符串前面添加一个r，表示原始字符串，不会发生转义
# 这里的r指raw string，会自动将反斜杠转义，例如
print('\n')     # 输出空行
print(r'\n')    # 输出\n
print('----------------------')

# 空行
'''
函数之间或类的方法之间用空行分隔，表示一段新的代码的开始。
类和函数入口之间也用一行空行分隔，以突出函数入口的开始。
空行与代码缩进不同，空行并不是Python语法的一部分。
书写时不插入空行，Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码，便于日后代码的维护或重构。
记住：空行也是程序代码的一部分。
'''

# 等待用户输入，执行下面的程序在按回车键后就会等待用户输入：
# input("\n\n按下 enter 键后退出。")
# 以上代码中 ，"\n\n"在结果输出前会输出两个新的空行。一旦用户按下 enter 键时，程序将退出。
print('----------------------')

# 同一行显示多条语句，Python可以在同一行中使用多条语句，语句之间使用分号(;)分割，以下是一个简单的实例：
import sys; x = 'runoob'; sys.stdout.write(x + '\n')
print('----------------------')

# 多个语句构成代码组
'''
缩进相同的一组语句构成一个代码块，我们称之代码组。
像if、while、def和class这样的复合语句，首行以关键字开始，以冒号( : )结束，该行之后的一行或多行代码构成代码组。
我们将首行及后面的代码组称为一个子句(clause)。
如下实例：
'''
expression = 1
if expression == 1:
    print('1')
elif expression == 2:
    print('2')
else:
    print('3')
print('----------------------')

# Print 输出，print默认输出是换行的，如果要实现不换行需要在末尾加上 end=""
x = "a"
y = "b"
# 换行输出
print(x)
print(y)
# 不换行输出
print(x, end="")
print(y, end="")
print()
print('----------------------')

# import 与 from...import
'''
在 python 用 import 或者 from...import 来导入相应的模块。
将整个模块(somemodule)导入，格式为： import somemodule
从某个模块中导入某个函数,格式为： from somemodule import somefunction
从某个模块中导入多个函数,格式为： from somemodule import firstfunc, secondfunc, thirdfunc
将某个模块中的全部函数导入，格式为： from somemodule import *
'''
# 导入sys模块
import sys

print('================Python import mode==========================')
print('命令行参数为：')
for i in sys.argv:
    print(i)
print('\n python 路径为', sys.path)

# 导入sys模块的argv.path成员
from sys import argv, path      # 导入特定的成员

print('================python from import===================================')
print('path:', path)            # 因为已经导入path成员，所以此处引用时不需要加sys.path
print('----------------------')

# 三：Python3 基本数据类型
'''
Python 中的变量不需要声明。每个变量在使用前都必须赋值，变量赋值以后该变量才会被创建。
在 Python 中，变量就是变量，它没有类型，我们所说的"类型"是变量所指的内存中对象的类型。
等号（=）用来给变量赋值。
等号（=）运算符左边是一个变量名,等号（=）运算符右边是存储在变量中的值。例如：
'''
counter = 100       # 整型变量
miles = 1000.0      # 浮点型变量
name = "nullhe"     # 字符串
print(counter)
print(miles)
print(name)

# 多个变量赋值，Python支持同时为多个变量赋值
a = b = c = 1
print(a)
print(b)
print(c)
print('----------------------')

# 以上实例，创建一个整型对象，值为 1，从后向前赋值，三个变量被赋予相同的数值。
# 您也可以为多个对象指定多个变量。例如：
a, b, c = 1, 2, "nullhe"
print(a)
print(b)
print(c)
# 以上实例，两个整型对象 1 和 2 的分配给变量 a 和 b，字符串对象 "nullhe" 分配给变量 c。
print('----------------------')

